Top 10k strings from ZZZ-UNK-Asm.z80 in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Games / [Z80] /

Back to the directory listing

   8 HL,(H01D6)
   5 HL,(H01D2)
   5 (H01D2),HL
   4 HL,(H01D0)
   4 (H20EB),HL
   4 (H01D6),HL
   4 (H01D0),HL
   3         LD      A,(H0185)       ;char mode
   3         CALL    H0D38           ;select HEX file drive
   2 HL,(H099F)
   2 HL,(H029B)
   2 HL,(H01D4)
   2 HL,(H01CD)
   2 HL,(H01CB)
   2 0,0,0,0,0,0,0,0
   2 (H099F),HL
   2 (H069D),HL
   2 (H029B),HL
   2 (H0221),HL
   2 (H01C9),HL
   2 (H0186),HL
   2         CP      03H             ;literal?
   2         CALL    NZ,H20DD        ; 'L' error
   2         CALL    H1F17   ;check for comma
   2         CALL    H18F4           ;call subroutine from table
   2         CALL    H1349           ;test results
   2         CALL    H0D31           ;select PRN file drive
   1 HL,(H20ED)
   1 HL,(H20EB)
   1 HL,(H196B)
   1 HL,(H1881)
   1 HL,(H069D)
   1 HL,(H01C9)
   1 HL,(H0186)
   1 HL,(H0005+1)
   1 H20F0:  DEFS    1               ;label table begins here
   1 H20EF:  DEFS    1               ;char index into H010C PRN line buffer
   1 H20ED:  DEFS    02H             ;EOF addr after 'END' (value of symbol)
   1 H20EB:  DEFS    02H             ;last H01D6 value from H1346 call
   1 H20E3:  PUSH    AF              ; 'N' error
   1 H20DD:  PUSH    AF              ; 'L' error
   1 H20D7:  PUSH    AF              ; 'P' error
   1 H20D1:  PUSH    AF              ; 'D' error
   1 H20C7:  PUSH    AF              ; 'V' error
   1 H20BD:  PUSH    AF              ; 'R' error
   1 H20A6:  LD      HL,(H01D2)      ;print PC addr in ascii to PRN buffer
   1 H2096:  PUSH    AF              ;print byte to PRN buffer
   1 H2074:  PUSH    HL              ;write HL to PRN buffer and HEX file
   1 H206C:  LD      HL,(H01D0)      ;advance PC counter
   1 H2048:  LD      A,(H01CF)       ;store byte in B reg
   1 H2047:  LD      B,A
   1 H2031:  CALL    H1352           ;test nibble
   1 H200A:  CALL    H2000
   1 H2000:  LD      HL,(H20EB)      ;test H20EB for 0. move to H01D6 and ret in HL
   1 H1FCB:  LD      A,(DE)          ;put 'USE FACTOR' in PRN buffer
   1 H1F8B:  LD      HL,H01CF        ;assembler pass count
   1 H1F84:  LD      A,E             ;HL=DE-HL
   1 H1F72:  CP      21H             ; '!'
   1 H1F4A:  CP      3BH             ; ';'
   1 H1F17:  PUSH    AF      ;check for comma
   1 H1F11:  CALL    H1ED1   ;parse and store 16 bit label/address (operand)
   1 H1F0B:  CALL    H1EDD   ;parse and store 8 bit label/address (operand)
   1 H1EFC:  CALL    H1EF2   ;store 16 bit regs (even# B,D or H) ORA'd with B(=parm2)
   1 H1EF2:  CALL    H1EE7   ;get 8 bit reg char value (0-7) into bits 3,4,5 of ACC
   1 H1EE7:  CALL    H1EDD   ;parse 8 bit reg char value into ACC (0 to 7 = ACC to M)
   1 H1EDD:  CALL    H1ED1   ;get 8 bit reg value or label address into ACC reg.
   1 H1ED1:  PUSH    BC      ;get 16 bit reg value or label address into HL reg.
   1 H1EB1:  CALL    H200A   ;each instruction line comes here to close
   1 H1E60:  CALL    H2048   ;store opcode in HEX file
   1 H1E50:  CALL    H1EF2   ;get reg mask following MVI instruction
   1 H1E41:  CALL    H1EF2   ;f(MOV)
   1 H1E1E:  CALL    H1EFC   ;process reg char following DAD instruction
   1 H1E12:  CALL    H1EFC   ;process reg char following LXI instruction
   1 H1DEB:  DEFW    H1E09   ;(13h) DI EI CMA CMC DAA HLT NOP RAL RAR RET RLC RRC STC
   1 H1DD7:  SUB     13H             ;ACC = parm1 value from H15A6 call
   1 H1DA7:  CALL    H2000           ;f(SET)
   1 H1D8D:  CALL    H1ED1           ;f(ORG)
   1 H1D87:  CALL    H20E3           ;f(MACRO) gives 'N' error (not supported)
   1 H1D40:  CALL    H200A           ;f(IF)
   1 H1D1E:  CALL    H2000           ;f(EQU)
   1 H1D18:  CALL    H20E3           ;f(ENDM) gives 'N' error (not supported)
   1 H1D15:  JP      H1DD1           ;f(ENDIF)
   1 H1CDE:  CALL    H200A           ;f(END)
   1 H1CC0:  CALL    H200A           ;f(DW)
   1 H1CA9:  CALL    H200A           ;f(DS)
   1 H1C43:  DEFW    H1C5B   ;(01h) DB
   1 H1BFE:  CALL    H1352           ;get symbol assignment nibble
   1 H1BBF:  LD      A,(H0185)       ;set char type in H0185
   1 H1BBC:  CALL    H1106           ;parse word into H0189 and H010C buffers and
   1 H1BA7:  CALL    H1103           ;new line (send CR/LF to PRN file)
   1 H1BA0:  XOR     A               ;entry to assembler with PRN and HEX files open
   1 H1B85:  PUSH    HL              ; 'E' error
   1 H1B7F:  CALL    H1106           ;f(+)
   1 H1B6E:  CALL    H1358           ;get symbol value into HL
   1 H1B64:  CALL    H1352           ;test nibble
   1 H1B50:  CALL    H1346           ;check for duplicate label
   1 H1B1E:  CP      08H             ;f(NOT) = 8
   1 H1B0E:  LD      A,C             ;parm1
   1 H1A94:  CALL    H15A6           ;scan for match. if match then ACC=parm1 B=parm2
   1 H1A89:  CP      02H             ;char type = numeric
   1 H1927:  CALL    H1B85           ;call 'E' error
   1 H18F4:  LD      L,A             ;call subroutine from H1901 table based on
   1 H18EC:  CALL    H18CF           ;get 2 pairs from H1881 buffer to HL and DE regs
   1 H18CF:  LD      HL,H1892        ;get previous pair to HL reg from H1881 buffer
   1 H18B0:  PUSH    AF              ;store parm1,parm2 in H186D and H1877 buffers
   1 H1893:  EX      DE,HL           ;store HL reg pair in H1881 buffer and increment
   1 H1892:  DEFS    01H             ;index into H1881 buffer
   1 H1891:  DEFS    01H             ;index into H186D or H1877 buffers
   1 H1877:  DEFS    0AH             ;buffer for parm2 values
   1 H186D:  DEFS    0AH             ;buffer for parm1 values
   1 H186C:  DEFS    01H             ;flag 0 or FFh
   1 H1869:  JP      H1938           ;return 'USE FACTOR' value in DE reg
   1 H1863:  JP      H1A19           ;return addr of symbol in H01C9 and (HL) reg
   1 H1860:  JP      H1BA0           ;enter assembler with PRN and HEX files open
   1 H16BD:  DEFB    0FH,0AH
   1 H15BA:  DEFW    H16BD           ;length = 1
   1 H15B5:  DEFB    10H             ;# of 1 char words in H15C4 table
   1 H15A9:  DEFW    H15C4           ;mnem length = 1 (as in reg designation char)
   1 H15A6:  JP      H1810           ;check word for match. return z-set for match
   1 H15A0:  JP      H1860           ;enter assembler with PRN and HEX files open
   1 H157F:  CALL    H148E           ;return HL pointing to value field of
   1 H1533:  INC     HL              ;store label name
   1 H14EB:  LD      HL,H0188        ;add symbol from H0188 buffer to end of symbol
   1 H149E:  CALL    H1471           ;search for duplicate label. return H01D6=0 if
   1 H148E:  LD      HL,(H01D6)      ;get length of symbol table
   1 H1471:  LD      HL,H0188        ;add all chars of label then mask bit 7
   1 H135B:  DEFS    100H            ;buffer table holds 16 bit values. offset into
   1 H1358:  JP      H1596           ;get value of symbol at (H01D6) into HL
   1 H1355:  JP      H158D           ;set value field of symbol at (H01D6) from HL
   1 H1352:  JP      H1572           ;get nibble from symbol table
   1 H134F:  JP      H1560           ;set nibble in symbol table at (H01D6) from
   1 H134C:  JP      H14EB           ;add symbol. see H14EB for more description
   1 H1349:  JP      H1498           ;ret dup label addr in HL. z-set if no dup
   1 H1346:  JP      H149E           ;using label in H0188 buffer, search for
   1 H1343:  JP      H145C           ;clear H135B buffer
   1 H1340:  JP      H15A0           ;enter assembler with PRN and HEX files open
   1 H132D:  PUSH    AF              ;convert lower to upper case if not in quotes
   1 H131E:  PUSH    AF              ; 'O' error. all regs preserved
   1 H1318:  PUSH    AF              ; 'V' bad value error. all regs preserved
   1 H12B8:  LD      (H110B),A       ;set base
   1 H12B4:  LD      HL,H0188        ;index
   1 H12AD:  CP      44H             ; 'D' decimal
   1 H128F:  CP      48H             ; 'H'
   1 H128A:  LD      A,08H           ;base 8 for octal
   1 H123C:  LD      A,(H110A)       ;last char
   1 H1221:  CP      0AH
   1 H11F4:  CALL    H11AD           ;get next char
   1 H11E1:  CALL    H11AD           ;search ahead to EOL
   1 H11C7:  LD      A,(H110A)       ;each char loops here
   1 H11C0:  XOR     A               ;parse line
   1 H11AD:  CALL    H110C           ;get char and store in PRN line buffer
   1 H1196:  CALL    H118B           ;return z clear if 'A-Z' or '0-9' alphanumeric
   1 H118B:  LD      A,(H110A)       ;return z clear if 'A-Z' alpha
   1 H117C:  CALL    H1171           ;return z clear if '0-9' or 'A-F' hex digit
   1 H1171:  LD      A,(H110A)       ;return z clear if '0-9' digit
   1 H116A:  LD      A,(HL)          ;null out '$' at (HL)
   1 H1151:  LD      HL,H0188        ;store char in H0189 buffer
   1 H1132:  CALL    H1149           ;print CR/LF to PRN file
   1 H1130:  POP     AF              ;restore char
   1 H110C:  CALL    H0206           ;get char from ASM file and store in
   1 H110B:  NOP                     ;base 2,8,10 or 16 for numeric value
   1 H110A:  NOP                     ;last char read from ASM file
   1 H1109:  NOP                     ;previous char from H110A
   1 H1106:  JP      H11C0           ;parse line up to non-alphanumeric char (EOL)
   1 H1103:  JP      H1132           ;output cr/lf to PRN file (clears line buffer)
   1 H1100:  JP      H1340           ;enter assembler with PRN and HEX files open
   1 H10B8:  LD      A,3AH           ;write complete line to HEX file
   1 H109A:  PUSH    AF              ;write ACC reg to HEX file in HEX ASCII form
   1 H108A:  LD      HL,H0223        ;write ACC reg to H0224 obj buffer and
   1 H1081:  CALL    H10B8           ;write complete line to HEX file
   1 H104C:  PUSH    BC              ;write ACC reg to HEX file
   1 H0F86:  LD      A,(H0237)       ;check HEX designation
   1 H0F77:  CALL    H0D28           ;error in writing PRN or HEX file comes here
   1 H0F39:  CALL    H0D28           ;close files and exit
   1 H0F15:  LD      (H0184),A       ;write CR to PRN file then clear line buffer
   1 H0F00:  LD      A,(H0184)       ;print H010C line buffer to PRN file with
   1 H0EEB:  LD      C,A             ;write ACC reg to PRN designation. echo error
   1 H0EDE:  PUSH    BC              ;write ACC reg to console
   1 H0EAA:  PUSH    BC              ;write ACC to HEX file with disk buffering
   1 H0E7A:  LD      A,(HL)          ;write HEX file comes here
   1 H0E53:  LD      HL,(H069D)      ;write byte to PRN file
   1 H0E34:  PUSH    BC              ;output char in ACC reg to PRN designation:
   1 H0E2B:  LD      HL,H0FFA        ; 'source file read error' exit
   1 H0DCA:  PUSH    BC              ;get char from ASM file
   1 H0DBB:  LD      HL,H0FE3        ; 'source filename error' exit
   1 H0DA1:  LD      HL,0400H        ;open ASM file. force reading of first byte
   1 H0D9E:  JP      H1100           ;enter assembler with HEX and PRN files open
   1 H0D3F:  LD      A,(H005C)       ;drive designation
   1 H0D38:  LD      A,(H0237)       ;select HEX file drive
   1 H0D31:  LD      A,(H0236)       ;select PRN file drive
   1 H0D21:  LD      A,(H0235)       ;select ASM file drive
   1 H0D10:  LD      C,16H           ;make file. (DE) = FCB
   1 H0D0B:  LD      C,13H           ;delete file. (DE) = FCB
   1 H0CFA:  LD      C,10H           ;close file
   1 H0CE9:  LD      C,0FH           ;open file
   1 H0CE0:  LD      HL,H0FA0        ;cold start
   1 H0CCD:  LD      DE,H005C        ;move 9 bytes from FCB to (HL)
   1 H0CBC:  LD      A,(HL)  ;print string at (HL). terminate w/cr
   1 H0CA1:  LD      HL,H0234 ;select drive in ACC reg and make it the current drive
   1 H09A1:  DEFS    300H    ;buffer for HEX file write
   1 H099F:  DEFS    02H     ;index into H09A1 buffer
   1 H069F:  DEFS    300H    ;buffer for PRN file write
   1 H069D:  DEFS    02H     ;index into H069F buffer
   1 H029D:  DEFS    400H    ;buffer for ASM file read
   1 H029B:  DEFS    02H     ;index into H029D buffer
   1 H027A:  DEFS    9       ;HEX filename
   1 H0258:  DEFS    01H     ;PRN filename
   1 H0238:  DEFS    9       ;ASM filename
   1 H0237:  DEFS    01H     ;HEX file drive designation
   1 H0236:  DEFS    01H     ;PRN file drive designation
   1 H0235:  DEFS    01H     ;ASM file drive designation
   1 H0234:  DEFS    01H     ;current disk
   1 H0224:  DEFS    10H     ;obj code line buffer for PRN and HEX use
   1 H0223:  DEFS    01H     ;index into line of H0224
   1 H0221:  DEFS    02H     ;HEX file pointer (base address of line)
   1 H021E:  JP      H0F39   ;close files and exit
   1 H021B:  JP      H104C   ;write byte in ACC reg to HEX file in ASCII form
   1 H0218:  JP      H0F2F   ;put error code from ACC reg into H010C flag
   1 H0215:  JP      H0F00   ;print H010C line buffer to PRN file w/echo to console
   1 H0212:  JP      H0CBC   ;print string at (HL). terminates with cr
   1 H0206:  JP      H0DCA   ;get char from H029D ASM file buffer.
   1 H0203:  JP      H0DA1   ;open ASM file
   1 H0200:  JP      H0CE0   ;cold start
   1 H01D6:  DEFS    2AH     ;stack space below H0200
   1 H01D4:  DEFW    H20F0   ;start of symbol table (fixed)
   1 H01D2:  DEFS    02H     ;address printed at start of line in PRN file
   1 H01D0:  DEFS    02H     ;address counter (for HEX file also)
   1 H01CF:  DEFS    01H     ;assembly pass count 0=build symbol table 1=table done
   1 H01CD:  DEFS    02H     ;contains BDOS base (end of memory space)
   1 H01CB:  DEFW    H20F0   ;contains end of symbol table
   1 H0189:  DEFS    01H     ;64 byte ASM line buffer
   1 H0188:  DEFS    01H     ;index into H0189 ASM buffer
   1 H0186:  DEFS    02H     ;holds value of numeric expression from H1106 call
   1 H0185:  DEFS    01H     ;char type. 4=EOL 3=literal 2=digit 1=alpha
   1 H0184:  DEFS    01H     ;index into H010C PRN buffer
   1 H010D:  DEFB    'C'     ;if H010C is non-space then contains error code:
   1 H010C:  DEFB    ' '     ;120 byte line buffer for PRN output
   1 H0080   EQU     0080H           ;DMA
   1 H005C   EQU     005CH           ;FCB
   1 H0005   EQU     0005H           ;BDOS
   1 H0000   EQU     0000H           ;cold re-entry to system
   1 ;table for parm1 = 13h to 21h. parm1 value in ()
   1 ;table for parm1 = 11h. parm2 referenced in ()
   1 ;on 2nd pass store byte from ACC in hex ascii form to H010C PRN line buffer
   1 ;assigned value. (H01D6): 00 00 X3 BDOS DW 0005
   1 ;and HEX file. also write PC address in hex ascii if at beginning of line.
   1 ;ACC reg low nibble. when nibble designated by X is set then symbol has been
   1 ; value is set and matches current PC else 'P' phase error
   1 ; using command ASM TEST.ABC will assemble TEST.ASM with drive designations
   1 ; they are referenced in source comments as parm1 and parm2.
   1 ; the following tables must have at least two words in table and words must be
   1 ; the following are 2 byte parameters corresponding to each word.
   1 ; send to [email protected]
   1 ; on 1st pass if H20EB non-zero then set PC counter to value of symbol operand
   1 ; non-alphanumeric chars encountered in label being evaluated come here to
   1 ; in alphabetical order
   1 ; if parm1 = 10H then parm2 represents a register as follows:
   1 ; got any comments or suggestions?
   1 ; for first pair at H16BD: parm1 = 0FH, parm2 = 0AH
   1 ; following period. A=ASM file drive, B=HEX file drive, C=SYM file drive
   1 ; evaluate possible expression (math)
   1 ; disassembled by Larry A. Greene
   1 ; at (H20EB). clear up unevaluated label, if any. on 2nd pass make sure label
   1 ; Digital Research ASM assembler
   1 ; B=0 C=1 D=2 E=3 H=4 L=5 M,SP,PSW=6
   1 ; 2nd pass loops here
   1 1DH,98H,1AH,0DEH,11H,0BH,03H,50H
   1 1DH,0B0H,11H,0AH,1AH,0F6H,21H,0D3H
   1 1DH,0A0H,09H,32H,1AH,0E6H,13H,2FH
   1 1BH,02H,13H,0EBH,13H,0E3H
   1 1AH,0D6H,0BH,28H,1DH,0A8H,1AH,0EEH
   1 1AH,0CEH,1DH,88H,1DH,80H,1AH,0C6H
   1 18H,40H,19H,06H,13H,00H,08H,3CH
   1 17H,0CDH,11H,06H,1BH,0AH,1CH,2AH
   1 17H,0C3H,1CH,3AH,14H,01H,02H,50H
   1 16H,0C1H,10H,06H,13H,17H,13H,1FH
   1 15H,09H,1EH,05H,1FH,0BH,11H,04H
   1 13H,3FH,1DH,0B8H,1AH,0FEH,13H,27H
   1 13H,0FBH,11H,08H,21H,0DBH,0AH,28H
   1 13H,0E9H,16H,0C5H,1CH,22H,13H,0F9H
   1 13H,0C9H,13H,07H,13H,0FH,20H,0C7H
   1 11H,07H,13H,76H,1EH,04H,1FH,03H
   1 11H,05H,11H,09H,11H,0CH
   1 11H,01H,13H,0F3H,11H,02H,11H,03H
   1 10H,07H,10H,00H,10H,01H,10H,02H
   1 10H,03H,10H,04H,10H,05H,10H,06H
   1 05H,46H,0EH,0AH,06H,46H,01H,50H
   1 04H,50H,1CH,32H,13H,37H,1DH,90H
   1 0,0,0,0,0,0,0,0,0,0,0
   1 (H20ED),HL
   1 (H196B),HL
   1 (H01CB),HL
   1 'TSHLSHRSTASTCSUBSUIXORXRAXRI'
   1 'SYMBOL TABLE OVERFLOW'
   1 'SOURCE FILE READ ERROR'
   1 'SOURCE FILE NAME ERROR'
   1 'OUTPUT FILE WRITE ERROR'
   1 'NZZ NCC POPEP M '
   1 'NO SOURCE FILE PRESENT'
   1 'NO DIRECTORY SPACE'
   1 'IGHT(C) 1978, DIGITAL RESEARCH '
   1 'H USE FACTOR'
   1 'ENDIFMACROTITLE'
   1 'END OF ASSEMBLY'
   1 'DBDIDSDWEIIFINORSP'
   1 'DALXIMODMOVMVINOPNOTORAORGORIOUTPOPPSWRALRARRETRLCRRCRSTSBBSBISE'
   1 'CP/M ASSEMBLER - VER 2.0'
   1 'CANNOT CLOSE FILES'
   1 'CALLENDMLDAXLHLDPCHLPUSHSHLDSPHLSTAXXCHGXTHL'
   1 'ACIADCADDADIANAANDANICMACMCCMPCPIDAADADDCRDCXENDEQUHLTINRINXJMPL'
   1 '()*+,-/ABCDEHLM'
   1         XOR     A               ;zero value field
   1         SUB     D               ;checksum
   1         RLA                     ;carry to bit 0
   1         RET     Z               ;taken if not alphanumeric
   1         RET     NZ              ;no
   1         RET                     ;bogus
   1         PUSH    AF              ;H010C PRN line buffer
   1         POP     AF              ;restore char
   1         OR      A               ;pass count
   1         LD      SP,H0200        ;set stack
   1         LD      HL,H1892        ;H1892 index by 2
   1         LD      HL,H1891        ;and increment H1891 index
   1         LD      HL,H0238        ;ASM filename
   1         LD      HL,H0188        ;no duplicate or pointing to link field before
   1         LD      HL,H010C        ;echo to console. H0184 = # of chars in line
   1         LD      HL,0064H        ;get optional drive designations following '.'
   1         LD      HL,(H0221)      ;if (H0221) + ACC = (H01D0) then jump to H108A
   1         LD      HL,(H0221)      ;address of line in HEX file
   1         LD      HL,(H01D6)      ;symbol at (H01D6)
   1         LD      HL,(H01D2)      ;PC counter of PRN line
   1         LD      HL,(H01C9)      ;holds value (example: C reg value = 0001)
   1         LD      HL,(H0186)      ;numeric value
   1         LD      H,00H           ;parm1 value from H186D table
   1         LD      E,A             ;see table following. range only 13h to 21h
   1         LD      E,(HL)          ;table at (H01CB) and zero value field
   1         LD      E,(HL)          ;increment H0223 index
   1         LD      E,(HL)          ;# of bytes to write
   1         LD      D,A             ;keep running checksum for Intel HEX form
   1         LD      C,A             ;else H1081
   1         LD      C,80H           ;extra code not needed (see 3 lines previous)
   1         LD      C,15H           ;write sequential
   1         LD      B,A             ;bogus code until H148E. image from addr 1566h
   1         LD      B,A             ;Z = null, X = console, else to H069F buffer
   1         LD      B,09H           ;error exit if '?' found
   1         LD      B,06H           ;6 times 80H = 300H
   1         LD      A,H             ;write line address
   1         LD      A,55H           ; 'U'
   1         LD      A,50H           ; 'P'
   1         LD      A,1AH           ;fill to end of buffer with ctrl-Z
   1         LD      A,10H           ;max length of label = 16 chars
   1         LD      A,10H           ;base 16 hex for 'H'
   1         LD      A,0AH           ; base 10 decimal (default)
   1         LD      A,02H           ;base 2 for binary
   1         LD      A,(HL)          ;duplicate
   1         LD      A,(H20EF)       ;PRN file line index
   1         LD      A,(H0236)       ;and write to disk as needed
   1         LD      A,(H0223)       ;index
   1         LD      A,(H01CF)       ;pass count
   1         LD      A,(H01CF)       ;assembly pass count
   1         LD      A,(H01CF)       ;assembler pass#
   1         LD      A,(H0185)       ;char type
   1         LD      A,(H010C)       ;END w/o symbol gives 'E' error (both passes)
   1         LD      (HL),A          ;store length-1
   1         LD      (HL),A          ;store in PRN line buffer
   1         LD      (HL),A          ;reset index to 0
   1         LD      (HL),20H        ;clear error char
   1         LD      (HL),10H        ;16 chars max length of label
   1         LD      (H20ED),HL      ;value of symbol after END. possibly EOF addr?
   1         LD      (H110A),A       ;save in last char
   1         LD      (H1109),A       ;previous char
   1         LD      (H029B),HL      ;of ASM file by setting index to EOF
   1         LD      (H01D2),HL      ;ORG address for PC counters
   1         LD      (H01D0),HL      ;address PC counter
   1         LD      (H01CF),A       ;reset pass count to 0
   1         LD      (H01CD),HL      ;set end of memory = BDOS base
   1         LD      (H0185),A       ;clear char mode
   1         LD      (H0184),A       ;index to label field for PRN file
   1         LD      (H0184),A       ;index to label field
   1         JP      Z,H206C         ;if 1st pass, only advance PC counter
   1         JP      Z,H1BBC         ;handle digit
   1         JP      Z,H1BA7         ;if 2nd pass
   1         JP      Z,H123C         ;taken if last char was '$'
   1         JP      Z,H123C         ;taken if '$'
   1         JP      Z,H1210         ;if not digit
   1         JP      Z,H1205         ;if not alpha
   1         JP      Z,H0F97         ;taken if no HEX file designation
   1         JP      Z,H0F86         ;taken if no PRN file designation
   1         JP      Z,H0F77         ;taken if no HEX file designated
   1         JP      Z,H0F4F         ;taken if no PRN file designated
   1         JP      Z,H0DBB         ;error exit
   1         JP      NZ,H2031        ;if 2nd pass
   1         JP      NZ,H1F7C        ;not alpha
   1         JP      NZ,H1F7C        ; 'S' error
   1         JP      NZ,H1C0C        ;if label assigned value
   1         JP      NZ,H1BFE        ;if no duplicate
   1         JP      NZ,H1B64        ;taken if no duplicate
   1         JP      NZ,H1B31        ;taken if no match
   1         JP      NZ,H1845        ;ACC now = nth pair of whichever 2 byte table
   1         JP      NZ,H123C        ;taken if hex digit
   1         JP      NC,H1F7C        ;taken for parm1<13h or >=34h (should be >=22h)
   1         JP      NC,H1541        ;taken if end of symbol space
   1         JP      H132D           ;go convert lower/upper conditionally
   1         JP      H11C7           ;loop for next char
   1         JP      H0EDE   ;write ACC reg to console
   1         JP      H0EAA   ;write ACC reg to HEX file (direct - after processed)
   1         JP      H0E34   ;write byte in ACC reg to PRN file. all regs preserved
   1         JP      H021E           ;go close files and exit
   1         INC     A               ;f(-)
   1         INC     (HL)            ;increment 1st to 2nd pass
   1         DEFW    H1EA5   ;(21h) IN OUT
   1         DEFW    H1E9E   ;(20h) RST
   1         DEFW    H1E8F   ;(1Fh) DCX INX
   1         DEFW    H1E88   ;(1Eh) DCR INR
   1         DEFW    H1E81   ;(1Dh) ADC ADD ANA CMP ORA XRA SUB SBB
   1         DEFW    H1E78   ;(1Ch) LDA STA LHLD SHLD
   1         DEFW    H1E69   ;(1Bh) LDAX STAX
   1         DEFW    H1E60   ;(1Ah) ACI ADI ANI CPI ORI XRI SUI SBI
   1         DEFW    H1E50   ;(19h) MVI
   1         DEFW    H1E41   ;(18h) MOV
   1         DEFW    H1E38   ;(17h) JMP CALL
   1         DEFW    H1E24   ;(16h) POP PUSH
   1         DEFW    H1E1E   ;(15h) DAD
   1         DEFW    H1E12   ;(14h) LXI
   1         DEFW    H1DCE   ;(0Ch) TITLE
   1         DEFW    H1DA7   ;(0Bh) SET
   1         DEFW    H1D8D   ;(0Ah) ORG
   1         DEFW    H1D87   ;(09h) MACRO (function not supported. gives 'N' error)
   1         DEFW    H1D40   ;(08h) IF
   1         DEFW    H1D1E   ;(07h) EQU
   1         DEFW    H1D18   ;(06h) ENDM (function not supported. gives 'N' error)
   1         DEFW    H1D15   ;(05h) ENDIF
   1         DEFW    H1CDE   ;(04h) END
   1         DEFW    H1CC0   ;(03h) DW
   1         DEFW    H1CA9   ;(02h) DS
   1         DEFW    H176D           ;length = 5
   1         DEFW    H1757           ;length = 4
   1         DEFW    H16EF           ;length = 3
   1         DEFW    H16DD           ;length = 2
   1         DEFW    H16BD           ;bogus?
   1         DEFW    H16AE           ;mnem length = 5
   1         DEFW    H1682           ;mnem length = 4
   1         DEFW    H15E6           ;mnem length = 3
   1         DEFW    H15D4           ;mnem length = 2
   1         DEFB    34H             ;# of 3 char words in H15E6 table
   1         DEFB    0CH,14H,0DH,1EH,00H,50H
   1         DEFB    0BH             ;# of 4 char words in H1682 table
   1         DEFB    09H             ;# of 2 char words in H15D4 table
   1         DEFB    03H             ;# of 5 char words in H16AE table
   1         DEC     (HL)            ;ignore trailing char
   1         CP      51H             ; 'Q' octal
   1         CP      4FH             ; 'O' octal
   1         CP      42H             ; 'B' binary
   1         CP      2AH             ; '*'
   1         CP      27H             ;single quote
   1         CP      24H             ; '$'
   1         CP      21H             ;bug here. should have been 0Fh
   1         CP      19H             ; 'Z'
   1         CP      17H             ; 'X'
   1         CP      10H             ;10h = start of label field
   1         CP      0FFH
   1         CP      06H             ;A-F = 0-5. carry set if A-F
   1         CP      05H             ;max length of mnem
   1         CP      04H             ;EOL ?
   1         CP      01H             ;alpha?
   1         CALL    Z,H20D7         ; 'P' error
   1         CALL    Z,H20A9         ;print PC at start of PRN line (if no error)
   1         CALL    Z,H1B85         ; 'E' error
   1         CALL    Z,H0218         ;error
   1         CALL    NZ,H20D7        ; 'P' error if duplicate symbol on 1st pass
   1         CALL    NZ,H20D1        ; 'D' error if DB label not 8-bit value
   1         CALL    NZ,H20BD        ; 'R' error
   1         CALL    NZ,H1B85        ;call 'E' error
   1         CALL    NZ,H119E        ;convert lower to upper case if not in quotes
   1         CALL    NZ,H119E        ;convert if not literal
   1         CALL    NZ,H1151        ;store char in ASM buffer
   1         CALL    NZ,H10B8        ;write final line to HEX file
   1         CALL    NZ,H0215        ;on 2nd pass print line to PRN file
   1         CALL    NC,H20C7        ; 'V' error (bad register designation)
   1         CALL    H20E3           ; 'N' error
   1         CALL    H20A9           ;put HL in PRN buffer just before 'USE FACTOR'
   1         CALL    H20A6           ;print final PRN line addr to buffer
   1         CALL    H2096           ;print byte in hex to PRN file
   1         CALL    H2047   ;store opcode
   1         CALL    H1FF9   ;update PRN file PC counter (H01D2) for next line
   1         CALL    H1F0B   ;parse operand
   1         CALL    H1F0B   ;parse and store 8 bit label/value after comma
   1         CALL    H1EE7   ;parse reg value
   1         CALL    H1ED1           ;get addr to HL of symbol following END (if any)
   1         CALL    H1ED1           ;get 16 bit value/address into HL
   1         CALL    H1B85           ; 'E' error
   1         CALL    H1863           ;process word
   1         CALL    H15A6           ;check word for match
   1         CALL    H1358           ;get symbol value
   1         CALL    H1355           ;set value of symbol to HL
   1         CALL    H1352           ;test nibble (see H134F notes)
   1         CALL    H134F           ;set nibble flag
   1         CALL    H134C           ;add symbol to table
   1         CALL    H134C           ;add symbol
   1         CALL    H1346           ;check for duplicate label
   1         CALL    H1343           ;clear buffer
   1         CALL    H11AD           ;get char and store in PRN line buffer
   1         CALL    H116A           ;null out '$' from last char
   1         CALL    H1106           ;parse word
   1         CALL    H1106           ;here after 2nd pass
   1         CALL    H10B8           ;write complete line to HEX file. H0221 = addr
   1         CALL    H10B8           ;write EOF address as data
   1         CALL    H109A           ;write checksum to HEX file
   1         CALL    H0EEB           ;write byte w/echo
   1         CALL    H0EDE           ;write to console
   1         CALL    H0EDE           ;echo to console
   1         CALL    H0EAA           ;write ACC reg to HEX file
   1         CALL    H0E34           ;to console if H010C is non-space
   1         CALL    H0DC4           ;compare DE and HL - buffer full?
   1         CALL    H0D10           ;make new PRN file
   1         CALL    H0D10           ;make new HEX file
   1         CALL    H0D0B           ;delete old PRN file
   1         CALL    H0D0B           ;delete old HEX file
   1         CALL    H0CFA           ;close PRN file
   1         CALL    H0CFA           ;close HEX file
   1         CALL    H0CCD           ;move filename
   1         CALL    H0CBC           ;print title
   1         CALL    H0CAE           ;after filename else use current drive
   1         CALL    H021B           ;write byte to HEX file
   1         CALL    H0218           ;error
   1         CALL    H0215           ;print PRN line buffer
   1         CALL    H0203           ;open ASM file
   1         CALL    H0005           ;get current disk
   1         CALL    H0005           ;error exit if disk full
   1         AND     08H             ;bit 3 set if odd# reg (ACC,C,E or L)
   1         AND     01H             ; =1 if A-F
   1                         ;reads disk as needed.
   1                         ;V = bad value
   1                         ;U = unclained label
   1                         ;S = syntax error
   1                         ;R = wrong register
   1                         ;P = duplicate label or phase error
   1                         ;O = unknown (some form of syntax error)
   1                         ;N = function not supported
   1                         ;L = bad mnemonic
   1                         ;E = bad register syntax
   1                         ;D = not an 8 bit value for DB label expression
   1                         ;C = comma missing
   1                         ;B = unknown
   1                         ;      PCHL SPHL XTHL XCHG
   1                                 ;to console on 2nd pass.
   1                                 ;table based on checksum of chars in label
   1                                 ;reading from ASM file as necessary. if char is
   1                                 ;numeric then return value in H0186. if LF (0Ah)
   1                                 ;found, will print line to PRN file with echo
   1                                 ;else H01D6 holds address of link field of dup.
   1                                 ;duplicate label. return H01D6=0 if no duplicate
   1                                 ;and regs ACC=parm1, B=parm2